home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gold Medal Software 2
/
Gold Medal Software Volume 2 (Gold Medal) (1994).iso
/
windows
/
win31
/
macsyma.arj
/
MACSDEMO.EXE
/
STOPEX.OUT
< prev
next >
Wrap
Text File
|
1993-09-13
|
7KB
|
97 lines
(c1) /* -*- Mode: Macsyma -*- */
/*
DEMONSTRATION OF PACKAGE STOPEX
*/
if get('stopex,'version)=false then load('stopex)$
C:\MACSD2B\share\STOPEX.fas being loaded.
C:\MACSD2B\share\genut.fas being loaded.
(c2) /* The function EXPANDWRT expands its first argument with respect to
its other arguments. All products of these other arguments appear
explicitly in the result. First we create an expression to work on:
*/
exp1:(a*b+c+d)*(a+b);
|$label(0,15,Times New Roman,$(d2$))$open($()b$hinge()$in( + )a$close($))$hinge()$in( )$open($()d$hinge()$in( + )c$hinge()$in( + )a$in( )b$close($))
(c3) expandwrt(exp1,a,b);
|$label(0,15,Times New Roman,$(d3$))b$in( )$paren(d$in( + )c,$(,$))$hinge()$in( + )a$in( )$paren(d$in( + )c,$(,$))$hinge()$in( + )a$in( )$sup(b,2)$hinge()$in( + )$sup(a,2)$in( )b
(c4) /* Positive integer powers of similar factors are also expanded. */
exp2:(a*b+c+d)^2*(a+b);
|$label(0,15,Times New Roman,$(d4$))$open($()b$hinge()$in( + )a$close($))$hinge()$in( )$sup($paren(d$in( + )c$in( + )a$in( )b,$(,$)),2)
(c5) expandwrt(exp2,a,b);
C:\MACSD2B\library1\binoml.fas being loaded.
|$label(0,15,Times New Roman,$(d5$))b$in( )$sup($paren(d$in( + )c,$(,$)),2)$hinge()$in( + )a$in( )$sup($paren(d$in( + )c,$(,$)),2)$hinge()$in( + )2$in( )a$in( )$sup(b,2)$in( )$paren(d$in( + )c,$(,$))$hinge()$in( + )2$in( )$sup(a,2)$in( )b$in( )$paren(d$in( + )c,$(,$))$hinge()$in( + )$sup(a,2)$in( )$sup(b,3)$hinge()$in( + )$sup(a,3)$in( )$sup(b,2)
(c6) /* By default, EXPANDWRT expands the arguments of operators,
in analogy to EXPAND. */
expandwrt((a+sin((log(a)+b)*(a+b)))*(a+b),a);
|$label(0,15,Times New Roman,$(d6$))b$in( )sin$paren($sup(b,2)$in( + )log$paren(a)$in( )b$in( + )a$in( )b$in( + )a$in( )log$paren(a))$hinge()$in( + )a$in( )sin$paren($sup(b,2)$in( + )log$paren(a)$in( )b$in( + )a$in( )b$in( + )a$in( )log$paren(a))$hinge()$in( + )a$in( )b$hinge()$in( + )$sup(a,2)
(c7) /* But by setting EXPANDWRT_NONRAT:FALSE, the expansion of
such arguments is inhibited. */
expandwrt_nonrat:false$
(c8) expandwrt((a+sin((log(a)+b)*(a+b)))*(a+b),a);
|$label(0,15,Times New Roman,$(d8$))b$in( )sin$paren($paren(b$in( + )a,$(,$))$in( )$paren(b$in( + )log$paren(a),$(,$)))$hinge()$in( + )a$in( )sin$paren($paren(b$in( + )a,$(,$))$in( )$paren(b$in( + )log$paren(a),$(,$)))$hinge()$in( + )a$in( )b$hinge()$in( + )$sup(a,2)
(c9) /* By default, denominators are not processed at all. */
exp3:(a*b+c+d)*(a+b)/(c+a)^2;
|$label(0,15,Times New Roman,$(d9$))$q($paren(b$in( + )a,$(,$))$in( )$paren(d$in( + )c$in( + )a$in( )b,$(,$)),$sup($paren(c$in( + )a,$(,$)),2))
(c10) expandwrt(exp3,a,b);
|$label(0,15,Times New Roman,$(d10$))$q(b$in( )$paren(d$in( + )c,$(,$)),$sup($paren(c$in( + )a,$(,$)),2))$hinge()$in( + )$q(a$in( )$paren(d$in( + )c,$(,$)),$sup($paren(c$in( + )a,$(,$)),2))$hinge()$in( + )$q(a$in( )$sup(b,2),$sup($paren(c$in( + )a,$(,$)),2))$hinge()$in( + )$q($sup(a,2)$in( )b,$sup($paren(c$in( + )a,$(,$)),2))
(c11) /* But by setting the switch EXPANDWRT_DENOM to TRUE, denominators
are also processed. */
expandwrt_denom:true$
(c12) expandwrt(exp3,a,b);
|$label(0,15,Times New Roman,$(d12$))$q(b$in( )$paren(d$in( + )c,$(,$)),$sup(c,2)$in( + )2$in( )a$in( )c$in( + )$sup(a,2))$hinge()$in( + )$q(a$in( )$paren(d$in( + )c,$(,$)),$sup(c,2)$in( + )2$in( )a$in( )c$in( + )$sup(a,2))$hinge()$in( + )$q(a$in( )$sup(b,2),$sup(c,2)$in( + )2$in( )a$in( )c$in( + )$sup(a,2))$hinge()$in( + )$q($sup(a,2)$in( )b,$sup(c,2)$in( + )2$in( )a$in( )c$in( + )$sup(a,2))
(c13) expandwrt_denom:false$
(c14) /* Expansion with respect to operator names can be specified. */
exp4:(a.b+c)*(a+c.d+e.f+g);
|$label(0,15,Times New Roman,$(d14$))$open($()c$hinge()$in( + )a$in( . )b$close($))$hinge()$in( )$open($()g$hinge()$in( + )e$in( . )f$hinge()$in( + )c$in( . )d$hinge()$in( + )a$close($))
(c15) expandwrt(exp4,".");
|$label(0,15,Times New Roman,$(d15$))c$in( )$paren(g$in( + )a,$(,$))$hinge()$in( + )$paren(a$in( . )b,$(,$))$in( )$paren(g$in( + )a,$(,$))$hinge()$in( + )c$in( )$paren(e$in( . )f,$(,$))$hinge()$in( + )$paren(a$in( . )b,$(,$))$in( )$paren(e$in( . )f,$(,$))$hinge()$in( + )c$in( )$paren(c$in( . )d,$(,$))$hinge()$in( + )$paren(a$in( . )b,$(,$))$in( )$paren(c$in( . )d,$(,$))
(c16) /* Notice that the expansion returned is not necessarily "minimal" with
respect to the variables specified in the argument list. That is,
there may be more than one term in the result proportional to the
same product of powers of the variables specified in the argument
list. */
exp5:(gamma(x)*a+b)*(gamma(x)*c+d+2*e^2);
|$label(0,15,Times New Roman,$(d16$))$open($()a$in( )$greektext(G)$paren(x)$hinge()$in( + )b$close($))$hinge()$in( )$open($()c$in( )$greektext(G)$paren(x)$hinge()$in( + )2$in( )$sup(e,2)$hinge()$in( + )d$close($))
(c17) expandwrt(exp5,gamma(x));
|$label(0,15,Times New Roman,$(d17$))a$in( )c$in( )$sup($greektext(G),2)$paren(x)$hinge()$in( + )a$in( )$paren(2$in( )$sup(e,2)$in( + )d,$(,$))$in( )$greektext(G)$paren(x)$hinge()$in( + )b$in( )c$in( )$greektext(G)$paren(x)$hinge()$in( + )b$in( )$paren(2$in( )$sup(e,2)$in( + )d,$(,$))
(c18) /* The function EXPANDWRT_FACTORED works on factored or partially
factored expressions. The expansion occurs only among those factors
that contain occurrences of the variables in the argument list of
EXPANDWRT_FACTORED. Note the difference. */
exp6:%pi*exp1;
|$label(0,15,Times New Roman,$(d18$))$greektext(p)$hinge()$in( )$open($()b$hinge()$in( + )a$close($))$hinge()$in( )$open($()d$hinge()$in( + )c$hinge()$in( + )a$in( )b$close($))
(c19) expandwrt(exp6,a,b);
|$label(0,15,Times New Roman,$(d19$))$greektext(p)$in( )b$in( )$paren(d$in( + )c,$(,$))$hinge()$in( + )$greektext(p)$in( )a$in( )$paren(d$in( + )c,$(,$))$hinge()$in( + )$greektext(p)$in( )a$in( )$sup(b,2)$hinge()$in( + )$greektext(p)$in( )$sup(a,2)$in( )b
(c20) expandwrt_factored(exp6,a,b);
|$label(0,15,Times New Roman,$(d20$))$greektext(p)$hinge()$in( )$open($()b$in( )$paren(d$in( + )c,$(,$))$hinge()$in( + )a$in( )$paren(d$in( + )c,$(,$))$hinge()$in( + )a$in( )$sup(b,2)$hinge()$in( + )$sup(a,2)$in( )b$close($))
(c21) /* Another example: */
exp7:exp6/a;
|$label(0,15,Times New Roman,$(d21$))$q($greektext(p)$in( )$paren(b$in( + )a,$(,$))$in( )$paren(d$in( + )c$in( + )a$in( )b,$(,$)),a)
(c22) expandwrt(exp7,a);
|$label(0,15,Times New Roman,$(d22$))$q($greektext(p)$in( )b$in( )$paren(d$in( + )c,$(,$)),a)$hinge()$in( + )$greektext(p)$in( )$paren(d$in( + )c,$(,$))$hinge()$in( + )$greektext(p)$in( )$sup(b,2)$hinge()$in( + )$greektext(p)$in( )a$in( )b
(c23) /* Clean Up */
(remvalue(exp1,exp2,exp3,exp4,exp5,exp6,exp7),
expandwrt_denom:false, expandwrt_nonrat:true)$